package org.example.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;

/**
 * @author 望轩
 * @createDate 2025/5/19 15:04
 * 当UserDealerImportForm继承了IExcelModel, IExcelDataModel类之后，它下买呢的@NotBlank或者@Excel等校验表达式也会生效，
 * 当导入excel的时候，这些信息会出现在导入失败信息failList的最前面，然后再是IExcelVerifyHandler处理器中返回的异常信息。
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class UserDealerImportForm extends ExcelVerifyInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 用户id
     */
    private String userId;
    /**
     * 客户类型（经销商级别）
     */
    @Excel(name = "客户类型", width = 20)
    @NotBlank(message = "客户类型不能为空;")
    private String level;
    /**
     * 客户公司名称
     */
    @Excel(name = "客户名称", width = 20)
    @NotBlank(message = "客户名称不能为空;")
    private String companyName;
    /**
     * 联系人邮件
     */
    @Excel(name = "联系人邮件", width = 20)
    @NotBlank(message = "联系人邮件不能为空;")
    @Email(message = "联系人邮件格式不正确;")
    private String email;
    /**
     * 下单编码
     */
    @Excel(name = "下单编码", width = 20)
    private String orderCode;
    /**
     * CPMS编码
     */
    @Excel(name = "CPMS编码", width = 20)
    private String cpmsCode;
    /**
     * 上级客户（上级经销商名称）
     */
    @Excel(name = "上级客户", width = 20)
    private String parentDealerName;
    /**
     * 所属部门（四级部门）
     */
    @Excel(name = "所属部门（四级部门）", width = 30)
    private String dept;
    /**
     * 签约类型
     */
    @Excel(name = "签约类型", width = 20)
    private String signType;
    /**
     * 渠道类型
     */
    @Excel(name = "渠道类型", width = 20)
    private String channelType;
    /**
     * 客户分类
     */
    @Excel(name = "客户分类", width = 20)
    private String dealerType;
    /**
     * 产品合作类型
     */
    @Excel(name = "产品合作类型", width = 20)
    private String productCooperationType;
    /**
     * 产品销售范围
     */
    @Excel(name = "产品销售范围", width = 20)
    private String productSalesScope;
    /**
     * 三级部门
     */
    @Excel(name = "三级部门", width = 20)
    private String thirdDept;
    /**
     * 四级部门
     */
    @Excel(name = "四级部门", width = 20)
    private String fourthDept;
    /**
     * 国家
     */
    @Excel(name = "国家", width = 20)
    @NotBlank(message = "国家不能为空")
    private String countryName;
    /**
     * 客户所有人/LABEL销售
     */
    @Excel(name = "客户所有人/LABEL销售", width = 20)
    private String labelSale;
    /**
     * 签约级别
     */
    @Excel(name = "签约级别", width = 20)
    private String signLevel;
    /**
     * 签约开始时间
     */
    @Excel(name = "签约开始时间", width = 20)
    private String signStartTime;
    /**
     * 签约结束时间
     */
    @Excel(name = "签约结束时间", width = 20)
    private String signEndTime;
}
